package com.jame.prototype;

/**
 * @author : Jame
 * @date : 2022-04-15 14:26
 * 原型-深克隆
 * 不仅当前类需要实现Cloneable接口,在该类中的属性也需要实现Cloneable接口
 * 以保证克隆出的类中的属性和当前类中的属性不一致
 **/
public class PrototypeDeep implements Cloneable {
    public Deep deep = new Deep();
    public int i = 1;

    /**
     * 在克隆方法中调用属性的克隆方法
     * @return
     * @throws CloneNotSupportedException
     */
    @Override
    public Object clone() throws CloneNotSupportedException {
        PrototypeDeep prototypeDeep =(PrototypeDeep) super.clone();
        prototypeDeep.deep = (Deep) deep.clone();
        return prototypeDeep;
    }
}
